package com.yidu.SystemManagement.service.impl;

import com.yidu.SystemManagement.entity.Menu;
import com.yidu.SystemManagement.entity.User;
import com.yidu.SystemManagement.mapper.MenuMapper;
import com.yidu.SystemManagement.service.MenuService;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @author 任俊杰
 * @version 1.0
 * @date 2022/12/11
 */
@Service
public class MenuImpl implements MenuService {
    @Resource
    private MenuMapper menuMapper;


    /**
     * 新增权限功能
     * @param menu 权限功能对象
     * @return int i 受影响的行数
     */
    @Override
    public int addMenu(Menu menu) {
        return menuMapper.addMenu(menu);
    }

    /**
     * 删除权限功能
     * @param menuId 权限功能id
     * @return int i 受影响的行数
     */
    @Override
    public int deleteMenu(String menuId) {
        return menuMapper.deleteMenu(menuId);
    }

    /**
     * 修改权限功能
     * @param menu 权限功能对象
     * @return int i 受影响的行数
     */
    @Override
    public int updateMenu(Menu menu) {
        return menuMapper.updateMenu(menu);
    }

    /**
     * 查询权限供
     * @param page 当前页
     * @param limit 每页显示数
     * @param menu 权限功能对象
     * @return list 集合
     */
    @Override
    public List<Menu> selectMenu(int page, int limit, Menu menu) {
        Map map=new HashMap();
        map.put("page",(page-1)*limit);
        map.put("limit",limit);
        map.put("strWhere",buildStrWhere(menu));
        List<Menu> menus = menuMapper.selectMenu(map);
        return menus;
    }

    /**
     * 生成条件字符串
     * @param menu 生成条件的参数
     * @return 条件字符串  and getRightText like '%%'
     */
    public String buildStrWhere(Menu menu){
        StringBuffer strWhere=new StringBuffer("");
        if(menu.getMenuName()!=null && !menu.getMenuName().equals(""))
        {
            strWhere.append(" and menuName like '%" +menu.getMenuName() + "%'");
        }
        if(menu.getMenuId()!=null && !menu.getMenuId().equals(""))
        {
            strWhere.append(" and menuId like '%" +menu.getMenuId() + "%'");
        }
        System.out.println(strWhere+"===111");
        return  strWhere.toString();
    }

    /**
     * 模糊查询行数
     * @param menu 权限功能对象
     * @return map 集合
     */
    @Override
    public int selectMenuCount(Menu menu) {
        Map map=new HashMap();
        map.put("strWhere",buildStrWhere(menu));
        return menuMapper.selectMenuCount(map);
    }


    /**
     * 查询父功能集合
     * @param userName 用户名
     * @return map 集合
     */
    public List<Menu> selectMainMenu(String userName){
        Map map=new HashMap();
        map.put("userName",userName);
        return menuMapper.selectMainMenu(map);
    }

    /**
     * 查询父功能下子功能集合
     * @param userName 用户名
     * @param parentMenuId 权限功能表里父功能id
     * @return map 集合
     */
    public List<Menu> selectSubMenu(String userName,String parentMenuId){
        Map map=new HashMap();
        map.put("userName",userName);
        map.put("parentMenuId",parentMenuId);
        return menuMapper.selectSubMenu(map);
    }
}
